package com.hecate.user.webapi.controller;

import com.hecate.common.response.HecateResponse;
import com.hecate.user.api.req.dep.FindDepListBySupperDepReq;
import com.hecate.user.api.req.dep.FindDepTreeReq;
import com.hecate.user.api.req.dep.FindFirstLevelDepReq;
import com.hecate.user.api.req.dep.SaveDepReq;
import com.hecate.user.dto.dep.DepDTO;
import com.hecate.user.dto.dep.FindDepListBySupperDepDTO;
import com.hecate.user.dto.dep.FindFirstLevelDepDTO;
import com.hecate.user.dto.dep.SaveDepDTO;
import com.hecate.user.service.DepService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Set;

/**
 * @author 黄星星
 * @date 2020-06-14
 */
@Api(value = "部门管理模块", tags = { "部门管理操作接口" })
@RestController
@RequestMapping("/userService/dep")
public class DepController {
    @Autowired
    private DepService depService;

    @ApiOperation(value="新增部门",tags={"新增部门信息"},notes="注意问题点")
    @PostMapping("/saveDep")
    public HecateResponse<SaveDepDTO> saveDep(@RequestBody SaveDepReq saveDepReq){
        HecateResponse<SaveDepDTO> saveDepHecateResponse = depService.saveDep(saveDepReq);
        return saveDepHecateResponse;
    }

    @ApiOperation(value="查看顶级部门信息",tags={"查看顶级部门信息"})
    @PostMapping("/findFirstLevelDep")
    public HecateResponse<FindFirstLevelDepDTO> findFirstLevelDep(@RequestBody FindFirstLevelDepReq findFirstLevelDepReq){
        HecateResponse<FindFirstLevelDepDTO> firstLevelDepResponse = depService.findFirstLevelDep(findFirstLevelDepReq);
        return firstLevelDepResponse;
    }

    @ApiOperation(value="查看指定父部门下的直接子部门",tags={"查看指定父部门下的直接子部门"})
    @PostMapping("/findDepListBySupperDep")
    public HecateResponse<FindDepListBySupperDepDTO> findDepListBySupperDep(@RequestBody FindDepListBySupperDepReq findDepListBySupperDepReq){
        HecateResponse<FindDepListBySupperDepDTO> findDepListBySupperDepDTOHecateResponse = depService.findDepListBySupperDep(findDepListBySupperDepReq);
        return findDepListBySupperDepDTOHecateResponse;
    }

    @ApiOperation(value="查看部门树结构",tags={"查看部门树结构"})
    @PostMapping("/findDepTree")
    public HecateResponse<Set<DepDTO>> findDepTree(@RequestBody FindDepTreeReq findDepTreeReq){
        HecateResponse<Set<DepDTO>> depTreeResponse = depService.findDepTree(findDepTreeReq);
        return depTreeResponse;
    }

}
